var Rect = function (_element,_data) {
	
	// --------------------------------------------------------------------------
    // import
    // --------------------------------------------------------------------------
    
    const Plugin = ghca_charts.view.elements.plugins.plugin;
    const RectElement = ghca_charts.view.elements.rectElement;
    const ObjectUtil = ghca_charts.view.util.objectUtil;
    const RegexUtil = ghca_charts.view.util.regexUtil;

    Plugin.apply(this,arguments);
    var self = this,
        rectElement = _element;

    self.config({
        x:0,
        y:0,
        width:10,
        height:10,
        border:2,
        borderColor:"green",
        linecap:"butt",
        color:"red"
        // dasharray:circumference,
        // dashoffset:stroke_percentage
    });


    //override
    this.actualWidth = function(){
       return self.config().width;
    }
    //override
    this.actualHeight = function(){
        return self.config().height;
    }

    //override
    this.nameSpace = function(){
        return "rect";
    }
    //override
    this.update = function(g){
    	var config = ObjectUtil.cloneObj(self.config());
        config.color = RegexUtil.replace(RegexUtil.dataRegex,config.color,self.data());
        config.borderColor = RegexUtil.replace(RegexUtil.dataRegex,config.borderColor,self.data());
        config.border = RegexUtil.replace(RegexUtil.dataRegex,config.border,self.data());
        config.width = RegexUtil.replace(RegexUtil.dataRegex,config.width,self.data());
        config.height = RegexUtil.replace(RegexUtil.dataRegex,config.height,self.data());
        rectElement.data(config);
    }
    //override
    this.drawPlugin = function(g){
        var config = ObjectUtil.cloneObj(self.config());
        config.color = RegexUtil.replace(RegexUtil.dataRegex,config.color,self.data());
        config.borderColor = RegexUtil.replace(RegexUtil.dataRegex,config.borderColor,self.data());
        config.border = RegexUtil.replace(RegexUtil.dataRegex,config.border,self.data());
        config.width = RegexUtil.replace(RegexUtil.dataRegex,config.width,self.data());
        config.height = RegexUtil.replace(RegexUtil.dataRegex,config.height,self.data());
        rectElement = new RectElement(g,config);
        rectElement.render();
        
        self.resetBBox(g);
    }
};

Rect.struct = function(room2d) {
	var Plugin = ghca_charts.view.elements.plugins.plugin;
	Plugin.struct(ghca_charts);
    Rect.prototype = Object.create(Plugin.prototype);
    Rect.prototype.constructor = Rect;
};

module.exports = Rect;